cssparser: Simplify
authorBenjamin Otte <otte@redhat.com>
Fri, 22 Mar 2019 16:37:04 +0000 (17:37 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 22 Mar 2019 18:55:34 +0000 (19:55 +0100)
Remove the uint parser (and use the int parser in the one user of it).

And avoid unnecessarily going through a macro.

gtk/gtkcsseasevalue.c
gtk/gtkcssparser.c
gtk/gtkcssparserprivate.h

index a9ab9dce40ad850c6b421921afc6c95413aa96cf..ab990af38e6c39c16b9b24e70eb907c94a3d320a 100644 (file)
@@ -254,7 +254,7 @@ gtk_css_ease_value_parse_cubic_bezier (GtkCssParser *parser)
 static GtkCssValue *
 gtk_css_ease_value_parse_steps (GtkCssParser *parser)
 {
-  guint n_steps;
+  int n_steps;
   gboolean start;
 
   if (!_gtk_css_parser_try (parser, "(", TRUE))
@@ -263,11 +263,16 @@ gtk_css_ease_value_parse_steps (GtkCssParser *parser)
       return NULL;
     }
 
-  if (!_gtk_css_parser_try_uint (parser, &n_steps))
+  if (!_gtk_css_parser_try_int (parser, &n_steps))
     {
       _gtk_css_parser_error (parser, "Expected number of steps");
       return NULL;
     }
+  else if (n_steps < 1)
+    {
+      _gtk_css_parser_error (parser, "Number of steps must be > 0");
+      return NULL;
+    }
 
   if (_gtk_css_parser_try (parser, ",", TRUE))
     {
index 6f4404db755249772c7fad824698b5adce02fafb..25b86f3cb8923e4060c334e0e195e8a0063675ff 100644 (file)
@@ -281,14 +281,17 @@ _gtk_css_parser_skip_whitespace (GtkCssParser *parser)
 }
 
 gboolean
-gtk_css_parser_try_len (GtkCssParser *parser,
-                        const char   *string,
-                        gsize         string_len,
-                        gboolean      skip_whitespace)
+_gtk_css_parser_try (GtkCssParser *parser,
+                     const char   *string,
+                     gboolean      skip_whitespace)
 {
+  gsize string_len;
+
   g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE);
   g_return_val_if_fail (string != NULL, FALSE);
 
+  string_len = strlen (string);
+
   if (g_ascii_strncasecmp (parser->data, string, string_len) != 0)
     return FALSE;
 
@@ -562,33 +565,6 @@ _gtk_css_parser_try_int (GtkCssParser *parser,
   return TRUE;
 }
 
-gboolean
-_gtk_css_parser_try_uint (GtkCssParser *parser,
-                          guint        *value)
-{
-  guint64 result;
-  char *end;
-
-  g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE);
-  g_return_val_if_fail (value != NULL, FALSE);
-
-  errno = 0;
-  result = g_ascii_strtoull (parser->data, &end, 10);
-  if (errno)
-    return FALSE;
-  if (result > G_MAXUINT)
-    return FALSE;
-  if (parser->data == end)
-    return FALSE;
-
-  parser->data = end;
-  *value = result;
-
-  _gtk_css_parser_skip_whitespace (parser);
-
-  return TRUE;
-}
-
 gboolean
 _gtk_css_parser_try_double (GtkCssParser *parser,
                             gdouble      *value)
index e5acde65e9b42ee7cd0729532957f58df04e0e4b..73b498a4fa1d8ae35dd4c564e863487673db0fe3 100644 (file)
@@ -61,10 +61,8 @@ gboolean        _gtk_css_parser_is_string         (GtkCssParser          *parser
  * however is fine to call if you don’t know yet if the token is a foo or a bar,
  * you can _try_bar() if try_foo() failed.
  */
-#define        _gtk_css_parser_try(p, s, skip) (gtk_css_parser_try_len (p, s, strlen(s), skip))
-gboolean        gtk_css_parser_try_len            (GtkCssParser          *parser,
+gboolean        _gtk_css_parser_try               (GtkCssParser          *parser,
                                                    const char            *string,
-                                                   gsize                  string_len,
                                                    gboolean               skip_whitespace);
 char *          _gtk_css_parser_try_ident         (GtkCssParser          *parser,
                                                    gboolean               skip_whitespace);
@@ -72,8 +70,6 @@ char *          _gtk_css_parser_try_name          (GtkCssParser          *parser
                                                    gboolean               skip_whitespace);
 gboolean        _gtk_css_parser_try_int           (GtkCssParser          *parser,
                                                    int                   *value);
-gboolean        _gtk_css_parser_try_uint          (GtkCssParser          *parser,
-                                                   guint                 *value);
 gboolean        _gtk_css_parser_try_double        (GtkCssParser          *parser,
                                                    gdouble               *value);
 gboolean        _gtk_css_parser_try_hash_color    (GtkCssParser          *parser,